package com.bsoft.gol.hcs.satisfaction.service;

import ctd.controller.exception.ControllerException;
import ctd.spring.boot.annotation.RpcAccess;
import ctd.util.annotation.RpcService;
import hcn.util.BaseResponse;
import org.springframework.web.bind.annotation.RequestBody;
import com.bsoft.gol.hcs.satisfaction.bean.request.*;
import com.bsoft.gol.hcs.satisfaction.bean.response.QueryListByDoctorResponse;
import com.bsoft.gol.hcs.satisfaction.entity.PatientSatisfactionSurvey;

/**
 * @author tongtp
 * @version v0.1
 * @className ISatisfactionPlanService
 * @description 满意度计划
 * @create 2020-09-01 16:49
 **/
public interface ISatisfactionPlanService {

	/**
	 * @param request
	 * @throws
	 * @description: 查询满意度计划列表
	 * @return: org.atag.core.base.BaseResponse
	 * @author: tongtp
	 * @date: 2020/9/2 11:50
	 */
	@RpcService
	QueryListByDoctorResponse queryListByDoctor(QueryListByDoctorRequest request) throws ControllerException;

	/**
	 * @param request
	 * @throws
	 * @description: 生成计划
	 * @return: org.atag.core.base.BaseResponse
	 * @author: tongtp
	 * @date: 2020/9/2 10:37
	 */
	@RpcService
	void produce(@RequestBody ProduceRequest request) throws ControllerException;

	/**
	 * @param request
	 * @throws
	 * @description: 满意度调查记录
	 * @return: org.atag.core.base.BaseResponse
	 * @author: tongtp
	 * @date: 2020/9/2 10:37
	 */
	@RpcService
	QueryListByDoctorResponse querySurveyList(QuerySurveyListRequest request) throws ControllerException;

	/**
	 * @param request
	 * @throws
	 * @description: 患者端查询满意度调查记录
	 * @return: org.atag.core.base.BaseResponse
	 * @author: tongtp
	 * @date: 2020/9/2 10:37
	 */
	@RpcService
	QueryListByDoctorResponse querySurveyForPatient(QuerySurveyForPatientRequest request) throws ControllerException;

	/**
	 * @param request
	 * @throws
	 * @description: 保存满意度调查结果
	 * @return: org.atag.core.base.BaseResponse
	 * @author: tongtp
	 * @date: 2020/9/2 11:50
	 */
	@RpcService
	@RpcAccess(auth = false)
	void saveSurveyResult(SaveSurveyResultRequest request) throws ControllerException;

	/**
	 * @param request
	 * @throws
	 * @description: 批量添加满意度调查计划
	 * @return: org.atag.core.base.BaseResponse
	 * @author: tongtp
	 * @date: 2020/9/2 16:14
	 */
	@RpcService
	PatientSatisfactionSurvey addPlan(AddPlanRequest request) throws ControllerException;

	/**
	 * @param request
	 * @throws
	 * @description: 发送满意度调查消息
	 * @return: org.atag.core.base.BaseResponse
	 * @author: tongtp
	 * @date: 2020/9/4 9:40
	 */
	@RpcService
	void sendSatisfactionSurveyMessage(SatisfactionSurveyMessageRequest request) throws ControllerException;

	/**
	 * @param
	 * @throws
	 * @description: 发送满意度调查消息给所有人
	 * @return: org.atag.core.base.BaseResponse
	 * @author: tongtp
	 * @date: 2020/9/3 16:23
	 */
	BaseResponse sendSatisfactionSurveyMessageToAll();

	@RpcService
	//手动执行发送的任务
	BaseResponse sendSatisfactionSurveyMessageToAllNew(String startTime  ,String endTime);


}
